/*
 * 测试简化JavaScript解析器的动态库加载
 */

#include <stdio.h>
#include <dlfcn.h>
#include "../c-deps/tree_sitter.h"

int main() {
    printf("=== 动态库加载测试 ===\n");
    
    // 加载动态库
    void *handle = dlopen("./simple-js-parser.so", RTLD_LAZY);
    if (!handle) {
        printf("无法加载动态库: %s\n", dlerror());
        return 1;
    }
    
    printf("✅ 动态库加载成功\n");
    
    // 获取语言函数
    const TSLanguage *(*get_language)(void) = dlsym(handle, "tree_sitter_simple_javascript");
    if (!get_language) {
        printf("无法找到语言函数: %s\n", dlerror());
        dlclose(handle);
        return 1;
    }
    
    printf("✅ 语言函数获取成功\n");
    
    // 调用语言函数
    const TSLanguage *language = get_language();
    if (language) {
        printf("✅ 语言对象创建成功\n");
    } else {
        printf("⚠️ 语言对象为NULL（预期行为 - 简化实现）\n");
    }
    
    // 获取测试函数
    int (*test_parser)(void) = dlsym(handle, "test_simple_parser");
    if (test_parser) {
        printf("✅ 测试函数获取成功\n");
        printf("\n--- 运行解析器测试 ---\n");
        test_parser();
    } else {
        printf("⚠️ 测试函数未找到: %s\n", dlerror());
    }
    
    // 清理
    dlclose(handle);
    printf("\n✅ 动态库测试完成\n");
    
    return 0;
}
